import java.util.*;

/**
* Universidad a Distancia de Madrid (UDIMA)
* Fabricas de Software: Tecnologias y Organizacion - 5301201-1S-B1
*
* @autor Luis Arturo Zarate Ayala <luisarturo1989@gmail.com>
**/
public class Persona {	
	
	/**
	* Atributo que representa el primerApellido
	**/
	private String primerApellido;
	
	/**
	* Atributo que representa el segundoApellido
	**/
	private String segundoApellido;
	
	/**
	* Atributo que representa el nombres
	**/
	private String nombres;
	
	/**
	* Atributo que representa el genero
	**/
	private Character genero;
	
	/**
	* Atributo que representa el nacionalidad
	**/
	private String nacionalidad;
	
	/**
	* Atributo que representa el fechaNacimiento
	**/
	private Calendar fechaNacimiento;
	
	/**
	* Atributo que representa el tipoDocumento
	**/
	private String tipoDocumento;
	
	/**
	* Atributo que representa el numeroDocumento
	**/
	private String numeroDocumento;
	
	/**
	* Atributo que representa el estatura
	**/
	private Integer estatura;
	
	
	/**
	* Metodo constructor
	*/
	public Persona ( String primerApellido, String segundoApellido, String nombres, Character genero, String nacionalidad, String fechaNacimiento, String tipoDocumento, String numeroDocumento, Integer estatura ){
	    setprimerApellido (primerApellido);
	    setsegundoApellido (segundoApellido);
	    setnombres (nombres);
	    setgenero (genero);
	    setnacionalidad (nacionalidad);
	    setfechaNacimiento (fechaNacimiento);
	    settipoDocumento (tipoDocumento);
	    setnumeroDocumento (numeroDocumento);
	    setestatura (estatura);
	
	}	
	
	
	/**
	* Metodo encargado de obtener el valor del atributo primerApellido
	**/
	public String getprimerApellido (){
		return primerApellido;
	}
	
	/**
	* Metodo encargado de cambiar el valor del atributo primerApellido
	* @param primerApellido, representa el valor a ingresar
	**/
	public void setprimerApellido (String primerApellido){
		this.primerApellido = primerApellido;	
	}
	
	/**
	* Metodo encargado de obtener el valor del atributo segundoApellido
	**/
	public String getsegundoApellido (){
		return segundoApellido;
	}
	
	/**
	* Metodo encargado de cambiar el valor del atributo segundoApellido
	* @param segundoApellido, representa el valor a ingresar
	**/
	public void setsegundoApellido (String segundoApellido){
		this.segundoApellido = segundoApellido;	
	}
	
	/**
	* Metodo encargado de obtener el valor del atributo nombres
	**/
	public String getnombres (){
		return nombres;
	}
	
	/**
	* Metodo encargado de cambiar el valor del atributo nombres
	* @param nombres, representa el valor a ingresar
	**/
	public void setnombres (String nombres){
		this.nombres = nombres;	
	}
	
	/**
	* Metodo encargado de obtener el valor del atributo genero
	**/
	public Character getgenero (){
		return genero;
	}
	
	/**
	* Metodo encargado de cambiar el valor del atributo genero
	* @param genero, representa el valor a ingresar
	**/
	public void setgenero (Character genero){
		this.genero = genero;	
	}
	
	/**
	* Metodo encargado de obtener el valor del atributo nacionalidad
	**/
	public String getnacionalidad (){
		return nacionalidad;
	}
	
	/**
	* Metodo encargado de cambiar el valor del atributo nacionalidad
	* @param nacionalidad, representa el valor a ingresar
	**/
	public void setnacionalidad (String nacionalidad){
		this.nacionalidad = nacionalidad;	
	}
	
	/**
	* Metodo encargado de obtener el valor del atributo fechaNacimiento
	**/
	public Calendar getfechaNacimiento (){
		return fechaNacimiento;
	}
	
	/**
	* Metodo encargado de cambiar el valor del atributo fechaNacimiento
	* @param fechaNacimiento, representa el valor a ingresar
	**/
	public void setfechaNacimiento (String fechaNacimiento){
	String [] values = fechaNacimiento.split("-");
		Calendar calendar = Calendar.getInstance();
		calendar.set(Calendar.DAY_OF_MONTH, Integer.parseInt(values[0]));
		calendar.set(Calendar.MONTH, Integer.parseInt(values[1]));
		calendar.set(Calendar.YEAR, Integer.parseInt(values[2]));
		this.fechaNacimiento = calendar;	
	}
	
	/**
	* Metodo encargado de obtener el valor del atributo tipoDocumento
	**/
	public String gettipoDocumento (){
		return tipoDocumento;
	}
	
	/**
	* Metodo encargado de cambiar el valor del atributo tipoDocumento
	* @param tipoDocumento, representa el valor a ingresar
	**/
	public void settipoDocumento (String tipoDocumento){
		this.tipoDocumento = tipoDocumento;	
	}
	
	/**
	* Metodo encargado de obtener el valor del atributo numeroDocumento
	**/
	public String getnumeroDocumento (){
		return numeroDocumento;
	}
	
	/**
	* Metodo encargado de cambiar el valor del atributo numeroDocumento
	* @param numeroDocumento, representa el valor a ingresar
	**/
	public void setnumeroDocumento (String numeroDocumento){
		this.numeroDocumento = numeroDocumento;	
	}
	
	/**
	* Metodo encargado de obtener el valor del atributo estatura
	**/
	public Integer getestatura (){
		return estatura;
	}
	
	/**
	* Metodo encargado de cambiar el valor del atributo estatura
	* @param estatura, representa el valor a ingresar
	**/
	public void setestatura (Integer estatura){
		this.estatura = estatura;	
	}
	
	
	public String toString (){
		String value = "";
		value += "" + "Primer Apellido" +": "+ this.primerApellido + "\n";
		value += "" + "Segundo Apellido" +": "+ this.segundoApellido + "\n";
		value += "" + "Nombres" +": "+ this.nombres + "\n";
		value += "" + "Genero" +": "+ this.genero + "\n";
		value += "" + "Nacionalidad" +": "+ this.nacionalidad + "\n";
		value += "" + "Fecha Nacimiento" +": "+ this.fechaNacimiento + "\n";
		value += "" + "Tipo Documento" +": "+ this.tipoDocumento + "\n";
		value += "" + "Numero Documento" +": "+ this.numeroDocumento + "\n";
		value += "" + "Estatura" +": "+ this.estatura + "\n";
		return value;
	}
}